package RRHH_Modelo;

import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

public class RHH_ANTICIPO_PLANILLA {

    private int ID;
    private int ID_PLANILLA;
    private Double MONTO;
    private String DESCRIPCION;
    private int CUOTA;
    private Double DEUDA_ACTUAL;
    private Conexion con = null;

    public RHH_ANTICIPO_PLANILLA(Conexion con) {
        this.con = con;
    }

    public RHH_ANTICIPO_PLANILLA(int ID, Double MONTO, String DESCRIPCION, int CUOTA, int ID_PLANILLA, Double DEUDA_ACTUAL) {
        this.ID = ID;
        this.ID_PLANILLA=ID_PLANILLA;
        this.MONTO = MONTO;
        this.DESCRIPCION = DESCRIPCION;
        this.CUOTA = CUOTA;
        this.DEUDA_ACTUAL = DEUDA_ACTUAL;
    }

    public int Insertar() throws SQLException {
        String consulta = "insert into BROKER.RHH_ANTICIPO_PLANILLA (ID, MONTO, DESCRIPCION, CUOTA, ID_PLANILLA,DEUDA_ACTUAL) VALUES (" + ID + "," + MONTO + ",'" + DESCRIPCION + "'," + CUOTA + ", "+ID_PLANILLA+", "+DEUDA_ACTUAL+")";
        con.EjecutarSentencia(consulta);
        consulta = "select BROKER.RHH_ANTICIPO_PLANILLA_SEQ.currval as ID from dual";
        ResultSet rs = con.EjecutarConsulta(consulta);
        rs.next();
        return rs.getInt("ID");
    }

    public boolean Modificar() throws SQLException {
        String consulta = "update BROKER.RHH_ANTICIPO_PLANILLA set ID = " + ID + ",ID_PLANILLA="+ID_PLANILLA+", MONTO = " + MONTO + ",DESCRIPCION = '" + DESCRIPCION + "',CUOTA = " + CUOTA + ", DEUDA_ACTUAL="+DEUDA_ACTUAL+" where ID =  " + getID();
        con.EjecutarSentencia(consulta);
        return true;
    }

    public boolean EliminarXid() throws SQLException {
        String consulta = "delete from BROKER.RHH_ANTICIPO_PLANILLA where ID= " + getID();
        con.EjecutarSentencia(consulta);
        return true;
    }

    public RHH_ANTICIPO_PLANILLA Buscar(int id) throws SQLException {
        String consulta = "select * from BROKER.RHH_ANTICIPO_PLANILLA where ID = " + getID();
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_ANTICIPO_PLANILLA> lista = Cargar(rs);
        if (lista.size() > 0) {
            return lista.get(0);
        } else {
            return null;
        }
    }

    public List<RHH_ANTICIPO_PLANILLA> Todos() throws SQLException {
        String consulta = "select * from BROKER.RHH_ANTICIPO_PLANILLA";
        ResultSet rs = con.EjecutarConsulta(consulta);
        List<RHH_ANTICIPO_PLANILLA> lista = Cargar(rs);
        return lista;
    }
    public List<RHH_ANTICIPO_PLANILLA> Todos(int id_planilla) throws SQLException {
        String consulta = "select * from BROKER.RHH_ANTICIPO_PLANILLA where ID_PLANILLA = "+id_planilla;
        ResultSet rs = con.EjecutarConsulta(consulta);
        return Cargar(rs);        
    }
    
    public double TotalAnticipo(int id_planilla) throws SQLException {
        String consulta = "select SUM(MONTO) AS TOTAL from BROKER.RHH_ANTICIPO_PLANILLA where ID_PLANILLA = "+id_planilla;
        ResultSet rs = con.EjecutarConsulta(consulta);
        if(rs.next())
            return rs.getDouble("TOTAL");
        else
            return 0.0;
    }

    public List<RHH_ANTICIPO_PLANILLA> Cargar(ResultSet rs) throws SQLException {
        List<RHH_ANTICIPO_PLANILLA> lista = new ArrayList<RHH_ANTICIPO_PLANILLA>();
        while (rs.next()) {
            RHH_ANTICIPO_PLANILLA objeto = new RHH_ANTICIPO_PLANILLA(con);
            objeto.setID(rs.getInt("ID"));
            objeto.setID_PLANILLA(rs.getInt("ID_PLANILLA"));
            objeto.setMONTO(rs.getDouble("MONTO"));
            objeto.setDESCRIPCION(rs.getString("DESCRIPCION"));
            objeto.setCUOTA(rs.getInt("CUOTA"));
            objeto.setDEUDA_ACTUAL(rs.getDouble("DEUDA_ACTUAL"));
            lista.add(objeto);
        }
        return lista;
    }

    public Double getDEUDA_ACTUAL() {
        return DEUDA_ACTUAL;
    }

    public void setDEUDA_ACTUAL(Double DEUDA_ACTUAL) {
        this.DEUDA_ACTUAL = DEUDA_ACTUAL;
    }

    public int getID_PLANILLA() {
        return ID_PLANILLA;
    }

    public void setID_PLANILLA(int ID_PLANILLA) {
        this.ID_PLANILLA = ID_PLANILLA;
    }   
    
    public int getID() {
        return ID;
    }

    public void setID(int ID) {
        this.ID = ID;
    }

    public Double getMONTO() {
        return MONTO;
    }

    public void setMONTO(Double MONTO) {
        this.MONTO = MONTO;
    }

    public String getDESCRIPCION() {
        return DESCRIPCION;
    }

    public void setDESCRIPCION(String DESCRIPCION) {
        this.DESCRIPCION = DESCRIPCION;
    }

    public int getCUOTA() {
        return CUOTA;
    }

    public void setCUOTA(int CUOTA) {
        this.CUOTA = CUOTA;
    }

    public Conexion getCon() {
        return this.con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }    
}
